/**************************************************************************
****  EB_MODEL installe un cookie.                                     ****
****                                                                   ****
****              Sa structure est la suivante :                       ****
****                     cookie  : LONG = EBPO                         ****
****                     adresse : LONG adresse des informations       ****
****                                                                   ****
****              Structure de la zone d'informations de 8 octets      ****
****                               UINT Num‚ro de version              ****
****                               UINT Num‚ro du jour                 ****
****                               UINT Num‚ro du mois                 ****
****                               UINT Num‚ro de l'ann‚e              ****
****                                                                   ****
****              Exemple : pour la version 2.01 du 21/3/1995          ****
****                        on a :                                     ****
****                                offset   |  Valeur (HEX)           ****
****                                   0     |     &201                ****
****                                   2     |     &21                 ****
****                                   4     |     &3                  ****
****                                   6     |     &1995               ***/
/**************************************************************************
STRUCTURE D'UN FICHIER *.EBS : Fichier contenant une scŠne pour EB_MODEL **
BARANGER Emmanuel              Pour version 2.88a et plus     16/09/1996 **
***************************************************************************/
/* Remarque importante
   Toutes les valeurs qui, dans P.O.V., sont comprises entre 0.0 et 1.0 sont
   ici cod‚es sur un octet. Il faut donc faire les conversions n‚cessaires.
   (0.0 … 1.0 devient 0 … 255)
*/
/***********************************************
   D‚finition des termes utilis‚s :

   CHAR           8 bits non sign‚s (CaractŠres)      (1 octets)
   BYTE           8 Bits non sign‚s entiers           (1 octets)
   INT            16 Bits sign‚s entiers              (2 octets)
   UINT           16 Bits non sign‚s entiers          (2 octets)
   LONG           32 Bits sign‚s entiers              (4 octets)
   ULONG          32 Bit non sign‚s entiers           (4 octets)
   FLOAT          32 Bit sign‚s flottant (format IEE) (4 octets)
   DOUBLE         64 bit sign‚s flottant              (8 octets)

***********************************************/

/* Structure g‚n‚rale */

typedef struct
{

   CHAR[4]  EBPq
   LONG     L1    / Taille de la ligne de commentaire 1 termin‚ par CR LF
   CHAR[L1]       / Commentaire 1
   LONG     L2    / Taille de la ligne de commentaire 2 termin‚ par CR LF
   CHAR[L2]       / Commentaire 2
   LONG     L3    / Taille de la ligne de commentaire 3 termin‚ par CR LF
   CHAR[L3]       / Commentaire 3
   LONG     L4    / Taille de la ligne de commentaire 4 termin‚ par CR LF
   CHAR[L4]       / Commentaire 4
   LONG     L5    / Taille de la ligne de commentaire 5 termin‚ par CR LF
   CHAR[L5]       / Commentaire 5
   LONG     L6    / Taille de la ligne de chemin        termin‚ par CR LF
   CHAR[L6]       / Chemin d'acc‚s au fichier include de textures
   LONG     L7    / Taille de la ligne de chemin        termin‚ par CR LF
   CHAR[L7]       / Chemin d'acc‚s au fichier include de couleurs
   /* termin‚ par CR LF signifie que ces nombres ont ‚t‚ ‚crit dans le
   fichier, non pas par le BPUT du GFA, mais par un PRINT #.
   */

   OBJET    0              // \  Le nombre d'objet ‚tant d‚finit avant
   ...                     //  \ la d‚finition des zones de m‚moire, il
   ...                     //  / et possible d'avoir un nombre d'objets
   OBJET    N-1            // /  diff‚rent d'un fichier … l'autre.
                           // Pour d‚termin‚ le nombre d'objets contenu
                           // dans un fichier, il suffit de faire :
                           // Taille totale du fichier - 7 premieres lignes
                           // - 808. Ce r‚sultat divis‚ par 380 donne le
                           // nombre d'objets du fichier.
                           // 808 correspond … : camera+sources+defaut+fond

   FLOAT    Camera_X
   FLOAT    Camera_Y
   FLOAT    Camera_Z
   FLOAT    Vers_X
   FLOAT    Vers_Y
   FLOAT    Vers_z
   FLOAT    RotationZ   /* Rotation de la cam‚ra en degr‚s sur Z (l'horizon)
   INT      Objectif    /* Valeur de l'objectif (la focale donc...)
                          48 =   6 mm (objectif dit "FISH-EYE" )
                         144 =  18 mm ( grand angle )
                         224 =  24 mm ( grand angle )
                         280 =  35 mm ( grand angle )
                         400 =  50 mm ( vue normale )
                        1080 = 135 mm ( t‚l‚objectif )
                        2240 = 280 mm ( t‚l‚objectif )
                        3200 = 400 mm ( t‚l‚objectif )

                        Petit calcul simple pour obtenir la valeur de l'angle
                        correspondant en langage GFA :
                              Angle=DEG(ATN(0.5/(FOCALE/400)))*2
                         */

   DEFAULT  Texture par d‚faut. Identique … la zone TEXTURE/PIGMENT/NORMAL
            /FINISH avec le drapeau d'activation … l'octet 293

   BYTE     Brouillard_Fond      /*  Bit 0 … 1 : Brouillard d‚finit */
                                 /*  Bit 1 … 1 : Background d‚finit */
   BYTE     Un octet vide pour des adressages sur adresses paires
   INT      Numero_couleur_b     /* pour le brouillard */
   BYTE     Teinte_b
   BYTE     Luminosite_b
   BYTE     Saturation_b
   BYTE     Un octet vide pour des adressages sur adresses paires
   INT      Distance_b
   INT      Numero_couleur_f     /* pour le fond d'‚cran */
   BYTE     Teinte_f
   BYTE     Luminosite_f
   BYTE     Saturation_f
   BYTE     Un octet vide pour des adressages sur adresses paires

} TOTAL;


' D‚finition des zones objets    Version 2.70a du 05/03/96 et plus
' --------------------------------------------------------------------------
' ----------------------- Partie objet         78 octets     |
'                    Num‚ro de l'objet : 2 octets            |   0
'                    Position en X     : 4 octets            |   2
'                    Position en Y     : 4 octets            |   6
'                    Position en Z     : 4 octets            |  10
'                    Largeur           : 4 octets            |  14
'                    Hauteur           : 4 octets            |  18
'                    Profondeur        : 4 octets            |  22
'                    Rotation sur X    : 4 octets            |  26
'                    Rotation sur Y    : 4 octets            |  30
'                    Rotation sur Z    : 4 octets            |  34
'                    Couleur de l'objet: 2 octets            |  38
'                    Type de C.S.G.    : 2 octets            |  40
'                    Relation C.S.G.   : 2 octets            |  42
'                    Nom de l'objet    : 23 octets           |  44
'                    Rapport sp‚ciale  :  1 octet            |  67
'                    Nom Height_Field  :  8 octets           |  68
'      Zone des drapeaux               :  2 octets           |  76
'                                   bit     0=OFF / 1=ON     |
'      Ombre (Partie g‚n‚rale)            bit 0 = Ombre      | ON/OFF
'      Visualisation de l'objet ON/OFF    bit 1 = Visuel     | ON/OFF
'      Pour les c“nes,troncs et tubes     bit 2 = Ouvert     | ON/OFF
'      Drapeau bibliothŠque OUI/NON       bit 3 = Drapeau    | ON/OFF
'      Indique si c'est un BICUBIC        bit 4 = Bicubic    | ON/OFF
'      Indique si c'est une montagne      bit 5 = Montagne   | ON/OFF
'      Indique un objet facette           bit 6 = Facettes   | ON/OFF
'                                         bit 7 =            |
'                                                            |
'      Indique un objet QUADRIC           bit 0 = Quadric    | ON/OFF
'      Indique un objet QUARTIC           bit 1 = Quartic    | ON/OFF
'      Indique un objet facette en c“ne   bit 2 = C“ne       | ON/OFF
'                                         bit 3 =            |
'                                         bit 4 =            |
'                                         bit 5 =            |
'                                         bit 6 =            |
'                                         bit 7 =            |
'                                                            |
' Zone de m‚moire contenant les couleurs et les textures     |
' ----------------------- Partie g‚n‚rale      38 octets     |
'      Index de texture pr‚d‚finie       2 octets : Texture  |  78   0   0
'      Translate sur X         : 4 octets                    |  80   2   2
'      Translate sur Y         : 4 octets                    |  84   6   6
'      Translate sur Z         : 4 octets                    |  88  10  10
'      Echelle sur X           : 4 octets                    |  92  14  14
'      Echelle sur Y           : 4 octets                    |  96  18  18
'      Echelle sur Z           : 4 octets                    | 100  22  22
'      Rotation sur X          : 4 octets                    | 104  26  26
'      Rotation sur Y          : 4 octets                    | 108  30  30
'      Rotation sur Z          : 4 octets                    | 112  34  34
' ----------------------- Partie PIGMENT      180 octets     |
'      Index de Pigment pr‚d‚finie       2 octets : Pigment  | 116   0  38
'      Motifs                  : 1 octet                     | 118   2  40
'                                         bit 0 = Marble     |
'                                         bit 1 = Wood       |
'                                         bit 2 = Onion      |
'                                         bit 3 = Leopard    |
'                                         bit 4 = Granite    |
'                                         bit 5 = Bozo       |
'                                         bit 6 = Spotted    |
'                                         bit 7 = Agate      |
'      Aspect                  : 1 octet                     | 119   3  41
'                                   bit     0=OFF / 1=ON     |
'                                         bit 0 = Gradient   |
'                                         bit 1 = Turbulence |
'                                         bit 2 = Octaves    |
'                                         bit 3 = Lambda     |
'                                         bit 4 = Omega      |
'                                         bit 5 = Frequency  |
'                                         bit 6 = Phase      |
'                                         bit 7 = Color_map  |
'      Divers                  : 1 octet                     | 120   4  42
'                                   bit     0=OFF / 1=ON     |
'                                         bit 0 = Image_map  |
'                                         bit 1 = Checker    |
'                                         bit 2 = Hexagon    |
'                                         bit 3 = Color      |
'                                         bit 4 = Once       |
'                                         bit 5 = Interpolate| (0=2/1=4)
'                                   bit 7 6 Type d'Image_map |
'                                         00 = GIF           |
'                                         01 = TGA           |
'                                         10 = IFF           |
'                                         11 = DIS           |
'      Translate,Rotate,Scale  : 1 octet                     | 121   5  43
'                                   bit     0=OFF / 1=ON     |
'                                         bit 0 = Translate  |
'                                         bit 1 = Rotate     |
'                                         bit 2 = Scale      |
'                                   bit 3 … 5 Sens du mapping|
'                                         000 = Dessous      |
'                                         001 = Dessus       |
'                                         010 = Gauche       |
'                                         011 = Droite       |
'                                         100 = Devant       |
'                                         101 = DerriŠre     |
'                                   bit 7 6 Type_map         |
'                                         00 = Plan          |
'                                         01 = SphŠre        |
'                                         10 = Cylindre      |
'                                         11 = Tor           |
'     Divers                   : 1 octet                     | 122   6  44
'                                         bit 0 = interpolate|  ON/OFF
'                                         bit 1 = Mandel     |  ON/OFF
'                                         bit 2 = Radial     |  ON/OFF
'                                         bit 3 = vide       |
'      Indique si la texture est multiple bit 4 = Multiple   |
'      Indique filtre image MAP pr‚sents  bit 5 = Filtres    |  ON/OFF
'                                   bit 7 6 Type de gradient |
'                                         00 = sur X         |
'                                         01 = sur Y         |
'                                         10 = sur Z         |
' Valeur turbulence..........................................|..............
'                             : 3 octets                     |
'                                        1 octet : sur X     | 123   7  45
'                                        1 octet : sur Y     | 124   8  46
'                                        1 octet : sur Z     | 125   9  47
' Valeur rotate..............................................|..............
'                             : 12 octets                    |
'                                        4 octet : sur X     | 126  10  48
'                                        4 octet : sur Y     | 130  14  52
'                                        4 octet : sur Z     | 134  18  56
' Valeur translate ..........................................|..............
'                             : 12 octets                    |
'                                        4 octet : sur X     | 138  22  60
'                                        4 octet : sur Y     | 142  26  64
'                                        4 octet : sur Z     | 146  30  68
' Valeur scale...............................................|..............
'                             : 12 octets                    |
'                                        4 octet : sur X     | 150  34  72
'                                        4 octet : sur Y     | 154  38  76
'                                        4 octet : sur Z     | 158  42  80
' ...........................................................|..............
'      Valeur Octaves          : 1 octet                     | 162  46  84
'      Valeur Lambda           : 1 octet                     | 163  47  85
'      Valeur Omega            : 1 octet                     | 164  48  86
'      Valeur Frequency        : 1 octet                     | 165  49  87
'      Valeur Phase            : 1 octet                     | 166  50  88
'      Valeur Agate_Trub       : 1 octet                     | 167  51  89
' ...........................................................|..............
'      Color                   : 2 octets                    | 168  52  90
'      Teinte                  : 1 octet                     | 170  54  92
'      Luminosit‚              : 1 octet                     | 171  55  93
'      Saturation              : 1 octet                     | 172  56  94
'      Transparence            : 1 octet                     | 173  57  95
' Color_Map : PremiŠre partie................................|..............
'      Color 1                 : 2 octets                    | 174  58  96
'      Teinte                  : 1 octet                     | 176  60  98
'      Luminosit‚              : 1 octet                     | 177  61  99
'      Saturation              : 1 octet                     | 178  62 100
'      Transparence            : 1 octet                     | 179  63 101
'      Color 2                 : 2 octets                    | 180  64 102
'      Teinte                  : 1 octet                     | 182  66 104
'      Luminosit‚              : 1 octet                     | 183  67 105
'      Saturation              : 1 octet                     | 184  68 106
'      Transparence            : 1 octet                     | 185  69 107
'      Color 3                 : 2 octets                    | 186  70 108
'      Teinte                  : 1 octet                     | 188  72 110
'      Luminosit‚              : 1 octet                     | 189  73 111
'      Saturation              : 1 octet                     | 190  74 112
'      Transparence            : 1 octet                     | 191  75 113
'      Color 4                 : 2 octets                    | 192  76 114
'      Teinte                  : 1 octet                     | 194  78 116
'      Luminosit‚              : 1 octet                     | 195  79 117
'      Saturation              : 1 octet                     | 196  80 118
'      Transparence            : 1 octet                     | 197  81 119
'      Color 5                 : 2 octets                    | 198  82 120
'      Teinte                  : 1 octet                     | 200  84 122
'      Luminosit‚              : 1 octet                     | 201  85 123
'      Saturation              : 1 octet                     | 202  86 124
'      Transparence            : 1 octet                     | 203  87 125
'      Color 6                 : 2 octets                    | 204  88 126
'      Teinte                  : 1 octet                     | 206  90 128
'      Luminosit‚              : 1 octet                     | 207  91 129
'      Saturation              : 1 octet                     | 208  92 130
'      Transparence            : 1 octet                     | 209  93 131
' Color_Map : DeuxiŠme partie................................|..............
'      Color 1                 : 2 octets                    | 210  94 132
'      Teinte                  : 1 octet                     | 212  96 134
'      Luminosit‚              : 1 octet                     | 213  97 135
'      Saturation              : 1 octet                     | 214  98 136
'      Transparence            : 1 octet                     | 215  99 137
'      Color 2                 : 2 octets                    | 216 100 138
'      Teinte                  : 1 octet                     | 218 102 140
'      Luminosit‚              : 1 octet                     | 219 103 141
'      Saturation              : 1 octet                     | 220 104 142
'      Transparence            : 1 octet                     | 221 105 143
'      Color 3                 : 2 octets                    | 222 106 144
'      Teinte                  : 1 octet                     | 224 108 146
'      Luminosit‚              : 1 octet                     | 225 109 147
'      Saturation              : 1 octet                     | 226 110 148
'      Transparence            : 1 octet                     | 227 111 149
'      Color 4                 : 2 octets                    | 228 112 150
'      Teinte                  : 1 octet                     | 230 114 152
'      Luminosit‚              : 1 octet                     | 231 115 153
'      Saturation              : 1 octet                     | 232 116 154
'      Transparence            : 1 octet                     | 233 117 155
'      Color 5                 : 2 octets                    | 234 118 156
'      Teinte                  : 1 octet                     | 236 120 158
'      Luminosit‚              : 1 octet                     | 237 121 159
'      Saturation              : 1 octet                     | 238 122 160
'      Transparence            : 1 octet                     | 239 123 161
'      Color 6                 : 2 octets                    | 240 124 162
'      Teinte                  : 1 octet                     | 242 126 164
'      Luminosit‚              : 1 octet                     | 243 127 165
'      Saturation              : 1 octet                     | 244 128 166
'      Transparence            : 1 octet                     | 245 129 167
' ..........................................................................
'      Pourcentage couleur 1 N1: 1 octet                     | 246 130 168
'      Pourcentage couleur 2 N1: 1 octet                     | 247 131 169
'      Pourcentage couleur 3 N1: 1 octet                     | 248 132 170
'      Pourcentage couleur 4 N1: 1 octet                     | 249 133 171
'      Pourcentage couleur 5 N1: 1 octet                     | 250 134 172
'      Pourcentage couleur 6 N1: 1 octet                     | 251 135 173
'      Pourcentage couleur 1 N2: 1 octet                     | 252 136 174
'      Pourcentage couleur 2 N2: 1 octet                     | 253 137 175
'      Pourcentage couleur 3 N2: 1 octet                     | 254 138 176
'      Pourcentage couleur 4 N2: 1 octet                     | 255 139 177
'      Pourcentage couleur 5 N2: 1 octet                     | 256 140 178
'      Pourcentage couleur 6 N2: 1 octet                     | 257 141 179
' Checker color..............................................|..............
'      Color 1                 : 2 octets                    | 258 142 180
'      Teinte                  : 1 octet                     | 260 144 182
'      Luminosit‚              : 1 octet                     | 261 145 183
'      Saturation              : 1 octet                     | 262 146 184
'      Transparence            : 1 octet                     | 263 147 185
'      Color 2                 : 2 octets                    | 264 148 186
'      Teinte                  : 1 octet                     | 266 150 188
'      Luminosit‚              : 1 octet                     | 267 151 189
'      Saturation              : 1 octet                     | 268 152 190
'      Transparence            : 1 octet                     | 269 153 191
' Hexagon color..............................................|..............
'      Color 1                 : 2 octets                    | 270 154 192
'      Teinte                  : 1 octet                     | 272 156 194
'      Luminosit‚              : 1 octet                     | 273 157 195
'      Saturation              : 1 octet                     | 274 158 196
'      Transparence            : 1 octet                     | 275 159 197
'      Color 2                 : 2 octets                    | 276 160 198
'      Teinte                  : 1 octet                     | 278 162 200
'      Luminosit‚              : 1 octet                     | 279 163 201
'      Saturation              : 1 octet                     | 280 164 202
'      Transparence            : 1 octet                     | 281 165 203
'      Color 3                 : 2 octets                    | 282 166 204
'      Teinte                  : 1 octet                     | 284 168 206
'      Luminosit‚              : 1 octet                     | 285 169 207
'      Saturation              : 1 octet                     | 286 170 208
'      Transparence            : 1 octet                     | 287 171 209
' ...........................................................|..............
'      Nom de l'Image_map      : 8 octets  code ASCII        | 288 172 210
' ----------------------- Partie NORMAL         60 octets    |
'      Index de Normal pr‚d‚finie        2 octets : Normal   | 296   0 218
'      Motifs                  : 1 octet                     | 298   2 220
'                                   bit     0=OFF / 1=ON     |
'                                         bit 0 = Bump       |
'                                         bit 1 = Dents      |
'                                         bit 2 = Ripples    |
'                                         bit 3 = Waves      |
'                                         bit 4 = Wrinkles   |
'      Aspect                             bit 5 = Turbulence |
'                                         bit 6 = Frequency  |
'                                         bit 7 = Phase      |
'      Modification            : 1 octet                     | 299   3 221
'                                   bit     0=OFF / 1=ON     |
'                                         bit 0 = Translate  |
'                                         bit 1 = Rotate     |
'                                         bit 2 = Scale      |
'                                         bit 3 = Once       |
'                                         bit 4 = Interpolate|( 0=2/1=4)
'                                         bit 5 = Bump_map   |
'                                   bit 7 6 Type de Bump_map |
'                                         00 = GIF           |
'                                         01 = TGA           |
'                                         10 = IFF           |
'                                         11 = DIS           |
'      Type de projection      : 1 octet                     | 300   4 222
'                                         bit 0 = use_index  |  ON/OFF
'                                         bit 1 = Interpolate|
'                                         bit 2 = vide       |
'                                   bit 3 … 5 Sens du relief |
'                                         000 = Dessous      |
'                                         001 = Dessus       |
'                                         010 = Gauche       |
'                                         011 = Droite       |
'                                         100 = Devant       |
'                                         101 = DerriŠre     |
'                                   bit 6 7 Type_map         |
'                                         00 = Plan          |
'                                         01 = SphŠre        |
'                                         10 = Cylindre      |
'                                         11 = Tor           |
'                                                            |
'      Valeur Bump             : 1 octet                     | 301   5 223
'      Valeur Dent             : 1 octet                     | 302   6 224
'      Valeur Ripples          : 1 octet                     | 303   7 225
'      Valeur Waves            : 1 octet                     | 304   8 226
'      Valeur Wrinkles         : 1 octet                     | 305   9 227
' .........................................................................
'      valeur Turbulence       : 3 octets                    |
'                                        1 octet : sur X     | 306  10 228
'                                        1 octet : sur Y     | 307  11 229
'                                        1 octet : sur Z     | 308  12 230
' ..........................................................................
'      Valeur Frequency        : 1 octet                     | 309  13 231
'      Valeur Phase            : 1 octet                     | 310  14 232
'      Valeur BUMP SIZE        : 1 octet                     | 311  15 233
' Valeur rotate .............................................|..............
'                              : 12 octets                   |
'                                        4 octet : sur X     | 312  16 234
'                                        4 octet : sur Y     | 316  20 238
'                                        4 octet : sur Z     | 320  24 242
' Valeur translate ..........................................|...............
'                              : 12 octets                   |
'                                        4 octet : sur X     | 324  28 246
'                                        4 octet : sur Y     | 328  32 250
'                                        4 octet : sur Z     | 332  36 254
' Valeur scale ..............................................|...............
'                              : 12 octets                   |
'                                        4 octet : sur X     | 336  40 258
'                                        4 octet : sur Y     | 340  44 262
'                                        4 octet : sur Z     | 344  48 266
'                                                            |
'      Nom du Bump_map         : 8 octets  code ASCII        | 348  52 270
' ----------------------- Partie FINISH         16 octets    |
'      Index de Finish pr‚d‚finie        2 octets : Finish   | 356   0 278
'      Motifs                  : 1 octet                     | 358   2 280
'                                   bit     0=OFF / 1=ON     |
'                                         bit 0 = Diffuse    |
'                                         bit 1 = Reflection |
'                                         bit 2 = Brilliance |
'                                         bit 3 = Crand      |
'                                         bit 4 = Ambient    |
'                                         bit 5 = Specular et Roughness
'                                         bit 6 = Vide       |
'                                         bit 7 = Phong      |
'      Refraction              : 1 octet                     | 359   3 281
'                                   bit     0=OFF / 1=ON     |
'                                         bit 0 = Refraction |
'                                         bit 1 = metalique  |
'                                   bit 2 … 7 vides          |
'      IOR                     : 1 octet                     | 360   4 282
'                                     0 : Rien               |
'                                   100 : Air                |
'                                   133 : Eau                |
'                                   150 : Verre              |
'                                   240 : Diamant            |
'                                 autre : Valeur libre       |
'    Valeur IOR libre        : 1 octet                       | 361   5 283
'    Valeur Diffuse          : 1 octet                       | 362   6 284
'    Valeur Reflection       : 1 octet                       | 363   7 285
'    Valeur Brilliance       : 1 octet                       | 364   8 286
'    Valeur Crand            : 1 octet                       | 365   9 287
'    Valeur Ambient          : 1 octet                       | 366  10 288
'    Valeur Specular         : 1 octet                       | 367  11 289
'    Valeur Roughness        : 1 octet                       | 368  12 290
'    Valeur Phong            : 1 octet                       | 369  13 291
'    Valeur Phong_Size       : 1 octet                       | 370  14 292
'                                                            |
'    Octet de parit‚                                         | 371  15 293
'      Indique une texture par d‚faut     bit 0 = Multiple   | ON/OFF
'      Indique une texture multiple       bit 1 = Multiple   | ON/OFF
'      Indique un carrelage en textures   bit 7 = TILES      | ON/OFF
'                                                            |
' ----------------------- Param‚trage des BLOBS  8 octets    |
'    Threshold des Blobs      : 4 octets                     | 372   0 294
'    Force du composant Blob  : 4 octets                     | 376   4 298
' -----------------------------------------------------------------------
Taille Totale : 380

/**************************************************************************
STRUCTURE D'UN FICHIER *.LUM  Fichier contenant les sources de lumiŠres  **
                              Pour version 2.90a et plus     16/09/1996  **
**************************************************************************/
/* Structure SOURCE. D‚finition d'une source de lumiŠre */

{ Structure g‚n‚rale

   LONG     NBL   / Nombre de lampes                    termin‚ par CR LF
   SOURCE         \
   .               \
   .                > Autant de fois qu'indiqu‚ dans NBL
   .               /
   SOURCE         /
}

typedef struct
{
   BYTE     Flags                /* =1 si lumiŠre allum‚e   */
                                 /* =0 si lumiŠre ‚teinte   */
   BYTE     Teinte_source        /* de 0 … 255              */
   BYTE     Luminosite_source    /* de 0 … 255              */
   BYTE     Saturation_source    /* de 0 … 255              */
   FLOAT    Source_X
   FLOAT    Source_Y
   FLOAT    Source_Z
   FLOAT    Svers_X
   FLOAT    Svers_Y
   FLOAT    Svers_Z
   INT      Objet_lie
   INT      Radius
   INT      Falloff
   INT      Tightness
   CHAR[22] Nom de la source lumineuse
   FLOAT    Largeur de la surface lumineuse
   FLOAT    Longueur de la surface lumineuse
   FLOAT    Adaptive pour surface lumineuse
   BYTE     Jitter pour surface lumineuse
   BYTE     Flags                         /* Bit 0 = 1 : Un soleil      */
                                          /* Bit 1 = 1 : Un projecteur  */
                                          /* Bit 2 = 1 : Une surface    */
                                          /* Bit 3 = 1 : Un objet li‚   */
}  SOURCE;

/**************************************************************************
STRUCTURE D'UN FICHIER *.EBO  Fichier contenant les objets import‚s,     **
                              tourn‚s, extrud‚s, quartic, quadric et CSG **
BARANGER Emmanuel             Pour version 2.88a et plus     15/07/1996  **
**************************************************************************/
   LONG  primitive   /* Termin‚ par CR FF
   Le nombre d'objet se trouvant dans le fichier EBO est : (primitive-14)-1
   LONG  taille      /* Termin‚ par CR LF
   Si taille est ‚gale … -1 nous avons une d‚claration de C.S.G
      INT      Toujours … z‚ro
      UINT     Nombre d'objets composant la C.S.G (N)
      .
      UINT     Num‚ro de l'objet 1  > Autant de fois que d'objets (N)
      .
      UINT     Num‚ro de l'objet C.S.G
      .
      INT      Toujours … z‚ro
      UINT     Nombre d'objets composant la C.S.G (N)
      .
      UINT     Nombre_de_points-1
      .
      . Les coordonn‚es sont indiqu‚es en LONG car multipli‚es par 1024
      . ce qui donne une pr‚cision de 3 chiffres aprŠs la virgule.
      .
      LONG     Coordonn‚e X      \
      LONG     Coordonn‚e Y       > Autant de fois que de points
      LONG     Coordonn‚e Z      /
      .
      UINT     Nombre de faces-1
      .
      INT      Nombre de points de la face-1      \
      INT      Point 1   \                         \
      INT      Point 2    \ Toujours 4 emplacements > Autant de fois que de
      INT      Point 3    / (donc un maximum de 4  /  faces
      INT      Point 4   /  points par face)      /
      .

   Si la taille est ‚gale … -2 nous avons une d‚claration de QUARTIC
      UINT     Nombre_de_points-1
      .
      . Les coordonn‚es sont indiqu‚es en LONG car multipli‚es par 1024
      . ce qui donne une pr‚cision de 3 chiffres aprŠs la virgule.
      .
      LONG     X premier point   \
      LONG     Y premier point    > Autant de fois que de points
      LONG     Z premier point   /
      .
      UINT     Nombre de faces-1
      .
      INT      Nombre de points de la face-1      \
      INT      Point 1   \                         \
      INT      Point 2    \ Toujours 4 emplacements > Autant de fois que de
      INT      Point 3    / (donc un maximum de 4  /  faces
      INT      Point 4   /  points par face)      /
      .
      . Les paramŠtres sont indiqu‚es en LONG car multipli‚es par 1024
      . ce qui donne une pr‚cision de 3 chiffres aprŠs la virgule.
      .
      LONG     Premier paramŠtre de la formule QUARTIC
      LONG     Second paramŠtre de la formule QUARTIC
      .
      .
      LONG     Trente quatriŠme paramŠtre de la formule QUARTIC
      LONG     Trente cinquiŠme paramŠtre de la formule QUARTIC
      .
   Si la taille est ‚gale … -3 nous avons une d‚claration de QUADRIC
      UINT     Nombre_de_points-1
      .
      . Les coordonn‚es sont indiqu‚es en LONG car multipli‚es par 1024
      . ce qui donne une pr‚cision de 3 chiffres aprŠs la virgule.
      .
      LONG     X premier point   \
      LONG     Y premier point    > Autant de fois que de points
      LONG     Z premier point   /
      .
      UINT     Nombre de faces-1
      .
      INT      Nombre de points de la face-1      \
      INT      Point 1   \                         \
      INT      Point 2    \ Toujours 4 emplacements > Autant de fois que de
      INT      Point 3    / (donc un maximum de 4  /  faces
      INT      Point 4   /  points par face)      /

      .
      . Les paramŠtres sont indiqu‚es en LONG car multipli‚es par 1024
      . ce qui donne une pr‚cision de 3 chiffres aprŠs la virgule.
      .
      LONG     Premier paramŠtre de la formule QUADRIC
      LONG     Second paramŠtre de la formule QUADRIC
      .
      .
      LONG     NeuviŠme paramŠtre de la formule QUADRIC
      LONG     DixiŠme paramŠtre de la formule QUADRIC
      .
   Si taille est plus grand que 0 nous avons soit un objet import‚, soit un
   BICUBIC
      UINT     Nombre_de_points-1
      .
      . Les coordonn‚es sont indiqu‚es en LONG car multipli‚es par 1024
      . ce qui donne une pr‚cision de 3 chiffres aprŠs la virgule.
      .
      LONG     X premier point   \
      LONG     Y premier point    > Autant de fois que de points
      LONG     Z premier point   /
      .
      UINT     Nombre de faces-1
      .
      INT      Nombre de points de la face-1      \
      INT      Point 1   \                         \
      INT      Point 2    \ Toujours 4 emplacements > Autant de fois que de
      INT      Point 3    / (donc un maximum de 4  /  faces
      INT      Point 4   /  points par face)      /
      .

   Si la taille est ‚gale … 1820 et que le nombre de point est de 97 alors,
il y a de grande chance que l'objet d‚fini soit un BICUBIC. Dans ce cas, il
faut lire se qui suit … la place de ce qui pr‚cede :
      ( Bon, d'accord, le principe est franchement hasardeux, mais, pour le
      moment, je n'ai pas eu le temps de le changer)

      UINT     Nombre_de_points-1   (donc, 97 soit : 81 points pour l'objet
      .                                              16 points pour les
      .                                                 points de contr“le
      .                                              1 points pour le reste
      . Les coordonn‚es sont indiqu‚es en LONG car multipli‚es par 1024
      . ce qui donne une pr‚cision de 3 chiffres aprŠs la virgule.
      .
      LONG     X premier point   \
      LONG     Y premier point    > Donc 81 fois
      LONG     Z premier point   /
      .
      LONG     X premier point   \
      LONG     Y premier point    > Donc 16 fois (les points de contr“le
      LONG     Z premier point   /  enregistr‚ dans l'ordre suivant
      .
      .                              1---- 2---- 3---- 4
      .                              |     |     |     |
      .                              5---- 6---- 7---- 8
      .                              |     |     |     |
      .                              9----10----11----12
      .                              |     |     |     |
      .                             13----14----15----16
      .
      INT      ParamŠtre TYPE (0 ou 1)
      INT      Valeur de Flatness (de 1 … 10 => POV : 0.1 … 1)
      INT      Valeur de U-Steps/V-Steps  (de 1 … 8)
      INT      Vide pour l'instant
      INT      Vide pour l'instant
      INT      Vide pour l'instant
      .
      UINT     Nombre de faces-1
      .
      INT      Nombre de points de la face-1      \
      INT      Point 1   \                         \
      INT      Point 2    \ Toujours 4 emplacements > Autant de fois que de
      INT      Point 3    / (donc un maximum de 4  /  faces
      INT      Point 4   /  points par face)      /
      .
